package main

import (
	"fmt"
	"math/rand"
	"time"
)

// 创建channel
func generator() chan int {
	out := make(chan int)
	i := 0
	go func() {
		for {
			// 随机sleep 1500毫秒
			time.Sleep(
				time.Duration(rand.Intn(1500)) *
					time.Millisecond)
			out <- i
			i++
		}
	}()
	return out
}


func main() {
	var c1, c2 = generator(), generator()
	// 假如我们想从 c1，c2 收数据， 并且谁来的快 收谁，就需要使用 select 了
	//n1 := <- c1
	//n2 := <- c2

	// 就好像是做了一个非阻塞式的处理~ 立即返回结果
	for {
		select {
		case n := <- c1:
			fmt.Println("Receive from c1: ", n)
		case n := <- c2:
			fmt.Println("Receive from c2: ", n)
		//default: // 不加 default 就会陷入阻塞，等待数据中
		//	fmt.Println("No value received")
		}
	}
}
